资源
笔记
Inpaint Anything 的插图。用户可以通过点击图像中的任何对象来选择它。借助强大的视觉模型,例如 SAM[7],LaMa[13] 和 Stable Diffusion (SD) [11],Inpaint Anything 能够平滑地移除物体(即移除任何物体)。此外,通过输入文本提示,用户可以用任何想要的内容填充对象(即填充任何内容)或任意替换对象的背景(即替换任何内容)。
- 现代图像的 image inpainting system,常常与 mask selection 和 holes filling 作斗争。
- 尝试了无蒙版图像的绘画,提出了一种“点击填充”的新范式,称之为 Inpainting Anything(IA)。支持三个主要功能:
- Remove Anything,用户点击任何一个对象,IA 将删除它,并填充背景
- SAM + SOTA
- SAM已经在各种场景中展示了有前途的分割能力和计算机视觉基础模型的巨大潜力。这是向视觉人工通用智能迈出的突破性一步,SAM曾被誉为“CV版的ChatGPT”。
- 研究了一种简单的单阶段方法LaMa[13]用于基于掩模的Inpaint,该方法通过结合快速傅里叶卷积(FFCs)[1]、感知损失[6]和积极的训练掩模生成策略,可以很好地生成重复的视觉结构。
- SAM + SOTA
- Fill Anything,用户可以向 IA 提供基于文本的提示,然后通过 IA 驱动 Stable Diffusion 等 AIGC 模型,将相应的生成内容替换之
- SAM + AIGC
- 使用了一个强大的AIGC稳定扩散[11]模型,基于文本提示在洞中生成所需的内容
- Replace Anything,使用 IA,用户可以选择保留点击选中的对象,并将剩余的背景替换为新生成的背景
- Remove Anything,用户点击任何一个对象,IA 将删除它,并填充背景
代码
跑环境
因为之前已经搭好了 segment-anything 的环境,所以 clone 一份:
conda create -n inpaint-anything --clone segment-anything
在仓库目录下:
python -m pip install -e segment_anything一大堆库,这玩意儿好慢啊!
python -m pip install -r lama/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple下载预训练好的模型: sam_vit_h_4b8939.pth 和 big-lama(这个居然是俄罗斯的网盘,注册了老半天,真傻逼啊),并将它们放入 ./pretrained_models:
在 pycharm 中的 Terminal 运行示例命令:
python fill_anything.py --input_img ./example/remove-anything/dog.jpg --point_coords 750 500 --point_labels 1 --text_prompt "a teddy bear on a bench" --dilate_kernel_size 15 --output_dir ./results --sam_model_type "vit_h" --sam_ckpt ./pretrained_models/sam_vit_h_4b8939.pth又要下载一坨,等吧。
居然说我显存不够,寄!
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 640.00 MiB (GPU 0; 8.00 GiB total capacity; 6.16 GiB already allocated; 0 bytes free; 6.66 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid frapip install git+https://github.com/openai/CLIP.git